home *** CD-ROM | disk | FTP | other *** search
- /*
- Ixprefs v.2.3--ixemul.library configuration program
- Copyright © 1995,1996 Kriton Kyrimis
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
- */
- #include <stdio.h>
- #include <string.h>
- #include <exec/types.h>
- #include <intuition/intuition.h>
- #include <proto/dos.h>
- #include <proto/intuition.h>
- #include "ixprefs.h"
- #include "ixemul.h"
- #include "version.h"
-
- #define IXPREFS_VERSION "2.3"
-
- #define RUNNING 1
- #define NOT_RUNNING 0
-
- #define CONFIGFILE "ENVARC:" IX_ENV_SETTINGS
- #define ENVFILE "ENV:" IX_ENV_SETTINGS
-
- /* These strings are long enough to have a high probability of being typed
- incorrectly, especially as they are used more than once. Using these
- definitions, we can detect typing errors at compile time */
- #define IX_NO_INSERT_DISK_REQUESTER "ix_no_insert_disk_requester"
- #define IX_UNIX_PATTERN_MATCHING_CASE_SENSITIVE "ix_unix_pattern_matching_case_sensitive"
- #define IX_WATCH_STACK "ix_watch_stack"
- #define IX_TRANSLATE_SLASH "ix_translate_slash"
- #define IX_MEMBUF_LIMIT "ix_membuf_limit"
- #define IX_RED_ZONE_SIZE "ix_red_zone_size"
- #define IX_FS_BUF_FACTOR "ix_fs_buf_factor"
- #define IX_ALLOW_AMIGA_WILDCARD "ix_allow_amiga_wildcard"
-
- extern void showrequester(struct Window*, char *, char *);
-
- extern struct ixemul_base *ixemulbase;
- extern int translateslash, membuf, watcher, redzone, blocks, cases, suppress,
- amigawildcard, noflush, ignoreenv, networking, enforcerhit,
- profilemethod;
-
- struct ix_settings settings;
-
- extern void displayprefs(void);
-
- void
- use(void)
- {
- FILE *f;
- unsigned long new_flags;
-
- new_flags =
- (translateslash ? ix_translate_slash : 0)
- | (watcher ? ix_watch_stack : 0)
- | (cases ? ix_unix_pattern_matching_case_sensitive : 0)
- | (suppress ? ix_no_insert_disk_requester : 0)
- | (amigawildcard ? ix_allow_amiga_wildcard : 0)
- | (noflush ? ix_do_not_flush_library : 0)
- | (ignoreenv ? ix_ignore_global_env : 0)
- | (enforcerhit ? ix_create_enforcer_hit : 0)
- | (profilemethod << 14);
- settings.version = IX_VERSION;
- settings.revision = IX_REVISION;
- settings.flags = new_flags;
- settings.membuf_limit = membuf;
- settings.red_zone_size = redzone;
- settings.fs_buf_factor = blocks;
- settings.network_type = networking;
- ix_set_settings(&settings);
- f = fopen(ENVFILE, "w");
- if (f) {
- fwrite(&settings, sizeof(settings), 1, f);
- fclose(f);
- } else {
- showrequester(ixprefsWnd, "Can't open " ENVFILE, "OK");
- }
- }
-
- void
- save(void)
- {
- FILE *f;
-
- use();
- f = fopen(CONFIGFILE, "w");
- if (f) {
- fwrite(&settings, sizeof(settings), 1, f);
- fclose(f);
- }else{
- showrequester(ixprefsWnd, "Can't open " CONFIGFILE, "OK");
- }
- }
-
- int
- selected(int which)
- {
- if (ixprefsGadgets[which]->Flags & GFLG_SELECTED) {
- return 1;
- }else{
- return 0;
- }
- }
-
- int savegadClicked( void )
- {
- /* routine when gadget "Save" is clicked. */
- save();
- return NOT_RUNNING;
- }
-
- int usegadClicked( void )
- {
- /* routine when gadget "Use" is clicked. */
- use();
- return NOT_RUNNING;
- }
-
- int cancelgadClicked( void )
- {
- /* routine when gadget "Cancel" is clicked. */
- return NOT_RUNNING;
- }
-
- int translateslashClicked( void )
- {
- /* routine when gadget "translate /" is clicked. */
- translateslash = selected(GDX_translateslash);
- return RUNNING;
- }
-
- int membufClicked( void )
- {
- /* routine when gadget "membuf size" is clicked. */
- membuf = GetNumber(ixprefsGadgets[GDX_membuf]);
- return RUNNING;
- }
-
- int redzoneClicked( void )
- {
- /* routine when gadget "red zone size" is clicked. */
- redzone = GetNumber(ixprefsGadgets[GDX_redzone]);
- return RUNNING;
- }
-
- int watcherClicked( void )
- {
- /* routine when gadget "enable stack watcher" is clicked. */
- watcher = selected(GDX_watcher);
- return RUNNING;
- }
-
- int blocksClicked( void )
- {
- /* routine when gadget "physical blocks to build one logical block (for stdio)" is clicked. */
- blocks = GetNumber(ixprefsGadgets[GDX_blocks]);
- return RUNNING;
- }
-
- int caseClicked( void )
- {
- /* routine when gadget "case sensitive)" is clicked. */
- cases = selected(GDX_case);
- return RUNNING;
- }
-
- int suppressClicked( void )
- {
- /* routine when gadget "suppress the \"Insert volume in drive\" requester" is clicked. */
- suppress = selected(GDX_suppress);
- return RUNNING;
- }
-
- int networkingClicked( void )
- {
- /* routine when cycle gadget "Networking support" is clicked. */
- networking = ixprefsMsg.Code;
- return RUNNING;
- }
-
- int profilemethodClicked( void )
- {
- /* routine when cycle gadget "Profile method" is clicked. */
- profilemethod = ixprefsMsg.Code;
- return RUNNING;
- }
-
- int amigawildcardClicked( void )
- {
- /* routine when gadget "allow Amiga wildcards" is clicked. */
- amigawildcard = selected(GDX_amigawildcard);
- return RUNNING;
- }
-
- int noflushClicked( void )
- {
- /* routine when gadget "do not flush library" is clicked. */
- noflush = selected(GDX_noflush);
- return RUNNING;
- }
-
- int ignoreenvClicked( void )
- {
- /* routine when gadget "ignore global environment (ENV:)" is clicked. */
- ignoreenv = selected(GDX_ignoreenv);
- return RUNNING;
- }
-
- int enforcerhitClicked( void )
- {
- /* routine when gadget "Create Enforcerhit on trap" is clicked. */
- enforcerhit = selected(GDX_enforcerhit);
- return RUNNING;
- }
-
- int ixprefssave( void )
- {
- /* routine when (sub)item "Save" is selected. */
- save();
- return NOT_RUNNING;
- }
-
- int ixprefsuse( void )
- {
- /* routine when (sub)item "Use" is selected. */
- use();
- return NOT_RUNNING;
- }
-
- int ixprefsabout( void )
- {
- /* routine when (sub)item "About" is selected. */
- showrequester(ixprefsWnd,
- "Ixprefs v." IXPREFS_VERSION "--ixemul.library configuration program\n"
- "Copyright \251 1995,1996 Kriton Kyrimis\n\n"
- "This program is free software; you can redistribute it\n"
- "and/or modify it under the terms of the GNU General\n"
- "Public License as published by the Free Software Foundation;\n"
- "either version 2 of the License, or (at your option)\n"
- "any later version.\n\n"
- "GUI designed using GadToolsBox 2.0c by Jan van den Baard",
- "OK");
- return RUNNING;
- }
-
- int ixprefsquit( void )
- {
- /* routine when (sub)item "Quit" is selected. */
- return NOT_RUNNING;
- }
-
- void read_from_settings(struct ix_settings *settings)
- {
- translateslash = (settings->flags & ix_translate_slash) != 0;
- watcher = (settings->flags & ix_watch_stack) != 0;
- cases = (settings->flags & ix_unix_pattern_matching_case_sensitive) != 0;
- suppress = (settings->flags & ix_no_insert_disk_requester) != 0;
- amigawildcard = (settings->flags & ix_allow_amiga_wildcard) != 0;
- noflush = (settings->flags & ix_do_not_flush_library) != 0;
- ignoreenv = (settings->flags & ix_ignore_global_env) != 0;
- enforcerhit = (settings->flags & ix_create_enforcer_hit) != 0;
- membuf = settings->membuf_limit;
- redzone = settings->red_zone_size;
- blocks = settings->fs_buf_factor;
- networking = settings->network_type;
- profilemethod = (settings->flags >> 14) & 3;
- }
-
- void defaults(void)
- {
- read_from_settings(ix_get_default_settings());
- }
-
- int ixprefsreset(void)
- {
- /* routine when (sub)item "Reset to defaults" is selected. */
-
- defaults();
- displayprefs();
- return RUNNING;
- }
-
- int
- last_saved(void)
- {
- FILE *f;
- int status;
-
- f = fopen(CONFIGFILE, "r");
- if (f) {
- fread(&settings, sizeof(settings), 1, f);
- fclose(f);
- read_from_settings(&settings);
- status = 0;
- }else{
- showrequester(ixprefsWnd, "Can't open " CONFIGFILE, "OK");
- status = 1;
- }
- return status;
- }
-
- int ixprefslast( void )
- {
- /* routine when (sub)item "Last Saved" is selected. */
- if (last_saved() == 0) {
- displayprefs();
- }
- return RUNNING;
- }
-
- int ixprefsrestore( void )
- {
- struct ix_settings *settings;
-
- /* routine when (sub)item "Restore" is selected. */
- settings = ix_get_settings();
- read_from_settings(settings);
-
- displayprefs();
-
- return RUNNING;
- }
-
- int ixprefsCloseWindow( void )
- {
- /* routine for "IDCMP_CLOSEWINDOW". */
- return NOT_RUNNING;
- }
-